博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于 Struts2 的文件下载
阅读量:4684 次
发布时间:2019-06-09

本文共 2758 字,大约阅读时间需要 9 分钟。

介于上篇我们讲述了基于 Struts2 的单文件和多文件上传,这篇我们来聊一聊基于 Struts2 的文件下载。

1、导 jar 包

commons-io-2.0.1.jar

struts2-core-2.3.15.3.jar

xwork-core-2.3.15.3.jar

struts2-sunspoter-stream-1.2.jar

2、web.xml 配置 Struts2 核心过滤器

1 
2
struts2
3
4 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter 5
6
7 8
9
struts2
10
/*
11

3、JSP 文件下载页(注意:链接中 filename 后跟的文件名需与 Action 文件下载路径中已知的文件名一致)

4、实现文件下载上传的 DownloadAction

1 package com.fhcq.action;  2   3 import java.io.File;  4 import java.io.FileInputStream;  5 import java.io.FileNotFoundException;  6 import java.io.InputStream;  7 import java.io.UnsupportedEncodingException;  8 import javax.servlet.ServletContext;  9 import org.apache.struts2.ServletActionContext; 10 import com.opensymphony.xwork2.ActionSupport; 11  12 public class DownloadAction extends ActionSupport { 13  14 	//提供一个InputStream类型的输入流 15 	private InputStream inputStream; //注意:在给InputSteam指定名称时,不能使用in 16 	//创建一个文件名的属性 17 	private String filename; 18  19 	public String download() throws FileNotFoundException{ 20  21 		//1.找到文件的存储路径 22 		ServletContext servletContext = ServletActionContext.getServletContext(); 23 		String realPath = servletContext.getRealPath("/WEB-INF/file"); 24 		//2.根据文件路径和文件名new一个新文件 25 		File file = new File(realPath,filename); 26  27 		//3.把文件读到一个InputStream中 28 		inputStream = new FileInputStream(file); 29 		//4.返回一个SUCCESS 30 		return SUCCESS; 31 		//5.由一个叫做stream的结果类型为我们把剩下的事情做完。 32 	} 33  34 	public InputStream getInputStream() { 35 		return inputStream; 36 	} 37  38 	public void setInputStream(InputStream inputStream) { 39 		this.inputStream = inputStream; 40 	} 41  42 	public String getFilename() { 43  44 		//解决中文文件名在下载过程出现乱码问题,struts.xml中也需添加charset=iso-8859-1 45 		try { 46 			filename=new String(filename.getBytes(),"iso-8859-1"); 47 		} catch (UnsupportedEncodingException e) { 48 			// TODO Auto-generated catch block 49 			e.printStackTrace(); 50 		} 51 		return filename; 52 	} 53  54 	public void setFilename(String filename) { 55 		this.filename = filename; 56 	} 57  58 }

5、配置 struts.xml

1 
2
3
4
5 6
7
8
9
10
11
12
13
14
application/octet-stream;charset=iso-8859-1 15
16
17
attachment;filename=${filename} 18
19
inputStream 20
21
22
23

转载于:https://www.cnblogs.com/justlove/p/6817608.html

你可能感兴趣的文章
Best Time to Buy and Sell Stock with Cooldown_LeetCode
查看>>
nginx+tomcat反向代理
查看>>
postgressql数据库中limit offset使用
查看>>
linux下如何添加一个用户并且让用户获得root权限
查看>>
搭建Extjs框架(二)
查看>>
NSDateFormatter的说明
查看>>
测试思想-集成测试 关于接口测试 Part 2
查看>>
测试思想-测试设计 史上最详细测试用例设计实践总结 Part1
查看>>
windows下mysql密码忘了怎么办?【转】
查看>>
java文件上传和下载
查看>>
SQL联合查询(内联、左联、右联、全联)的语法(转)
查看>>
枚举和实用类
查看>>
python基础知识第二篇(字符串)
查看>>
php生成器使用总结
查看>>
android studio 导入第三方库的记录
查看>>
T-SQL中的indexof函数
查看>>
javascript基础之数组(Array)对象
查看>>
mysql DML DDL DCL
查看>>
RAMPS1.4 3d打印控制板接线与测试1
查看>>
python with语句中的变量有作用域吗?
查看>>